package leetcode_61_80;

import java.util.ArrayList;
import java.util.List;

public class simplifyPath_71 {
    /**
     * 给一个字符串 path ，表示指向某一文件或目录的 Unix 风格 绝对路径 （以 '/' 开头）
     * 请你将其转化为更加简洁的规范路径。
     * @param path
     * @return
     */
    public String simplifyPath(String path) {
        /**
         * 想法是，将字符串中的所有路径提取出来
         */
        List<String> sbs=new ArrayList<>();  //字符串中的所有路径
        for(int i=path.length()-1;i>=0;){
            StringBuilder sb=new StringBuilder();
            while(path.charAt(i)!='/') {
                sb.append(path.charAt(i));
                i--;
            }
            if(sb.length()!=0 && !sb.toString().equals(".")) // . 直接跳过
                sbs.add(sb.toString());
            i--;
        }
        int count=0; //需要跳过的个数
        StringBuilder ans=new StringBuilder();
        for(int i=0;i<sbs.size();i++){
            if (sbs.get(i).equals(".."))    //是.. 跳过个数加一，跳过
                count++;
            else{
                if (count != 0)
                    count--;
                else
                    ans.append(sbs.get(i)).append("/");
            }
        }
        if(ans.length()==0)
            ans.append("/");
        return ans.reverse().toString();
    }
}
